<?php

/**
 * Класс реализует основные действия с задачами
 */
class TaskController{
    
    /**
     * @var string $tableName  имя таблицы в БД
     */
    public static $tableName = 'task';

    /**
     * В строке вырезаются html-тэги, экранируются все html-сущности,
     * делается обрезание пробелов.
     * 
     * @param string $name
     * @return string готовая к записи в БД строка
     */
    public static function task4db($name)
    {
        return trim(htmlentities(strip_tags($name, '<br>'),ENT_QUOTES, 'UTF-8'));
    }
    
    /**
     * Получает все записи из БД
     * 
     * @return array
     */
    public static function getAll(){
        $res = array();
        foreach(R::find(self::$tableName, ' 1 ORDER BY date DESC') as $id=>$bean)
        {
            $res[$bean->id]['date']  = $bean->date;
            $res[$bean->id]['name']  = $bean->name;
        }
        return $res;
    }
    
    /**
     * Добавляет задачу в БД
     * 
     * @param string $name 
     */
    public static function addTask($name)
    {
        $name = self::task4db($name);
        if($name)
        {
            R::exec( 'insert into task (name) values (\''.$name.'\')' );
            //$task = R::dispense(self::$tableName);
            //$task->name = $name;
            //R::store($task);
        }else
            throw new Exception('Неверно заданы параметры для добавления задачи!');

    }
    
    /**
     * Редактирование записи
     * 
     * @param int $id
     * @param string $name 
     */
    public static function editTask($id, $name)
    {
        $name = self::task4db($name);
        if(intval($id) && $name)
        {
            R::exec( 'update '.self::$tableName.' set name="'.$name.'", date=now() where id='.$id);
        }else
            throw new Exception('Неверно заданы параметры для редактирования задачи!');
    }

    /**
     * Удаление записи
     * 
     * @param int $id 
     */
    public static function deleteTask($id)
    {
        if(intval($id))
        {
            R::exec( 'delete from task where id = '.$id);
            //R::trash(R::findOne(self::$tableName));
        }else
            throw new Exception('Неверно заданы параметры для удаления задачи!');
    }    
}
 ?>
